using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using IGCal.GA.BaseObjects;
using IGCal.GA;
using IGCal.Funzioni;

namespace Calcio
{
	/// <summary>
	/// Classe form opzioni
	/// </summary>
  public partial class frmOpzioni : IGCal.Windows.DB.frmOpzioniBase
  {

    #region Costruttori della classe

    /// <summary>
		/// Costruttore della classe
		/// </summary>
    public frmOpzioni()
		{
			// This call is required by the Windows Form Designer.
			InitializeComponent();

      CaricaComboAftertInsertAction();

      CaricaComboReportOutputType();

      CaricaComboSettingsSerializerProvider();

      FunzioniCalcio.CaricaComboStagioni(cmbAnni);

      LegaProcedureAEventi();
    }

  
    #endregion


    #region Funzioni e metodi

    /// <summary>
    /// Lega procedure ad eventi
    /// </summary>
    private void LegaProcedureAEventi()
    {
      // Tab Generale
      cmbAfterInsertAction.SelectedIndexChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      cmbReportOutputType.SelectedIndexChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      cmbSettingsSerializerProvider.SelectedIndexChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      numMaxElementiInLista.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      txtDocumentoDirigenti.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      cmbAnni.SelectedIndexChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      floModelloDIstintaExcel.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      txtStadio.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      this.txtNomeSquadra.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      this.numPrimaRigaDati.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      this.txtCategoriaCampionatoCorrente.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);
      this.txtDocumentoDirigenti.TextChanged += new EventHandler(AbilitaModificaControlliAggiuntivi);

    }

    /// <summary>
    /// Carica combo relativo al tipo di output per i report
    /// </summary>
    private void CaricaComboReportOutputType()
    {
      // Combo compiler
      cmbReportOutputType.Items.Clear();

      foreach (ReportOutputType itm in Enum.GetValues(typeof(ReportOutputType)))
        cmbReportOutputType.Items.Add(itm);
    }

    /// <summary>
    /// Carica combo relativo al tipo di comportamento dopo la pressione del pulsante aggiona nei form di inserimento modifica
    /// </summary>
    private void CaricaComboAftertInsertAction()
    {
      cmbAfterInsertAction.Items.Clear();

      cmbAfterInsertAction.Items.Add("Resta in modifica");
      cmbAfterInsertAction.Items.Add("Nuovo inserimento");
    }

    /// <summary>
    /// Carica il combo relativo al tipo di SettingsSerializer da utilizzare
    /// </summary>
    private void CaricaComboSettingsSerializerProvider()
    {
      cmbSettingsSerializerProvider.Items.Clear();

      cmbSettingsSerializerProvider.Items.Add("Database");
      cmbSettingsSerializerProvider.Items.Add("File system");
    }

    private void AbilitaModificaControlliAggiuntivi(object sender, EventArgs e)
    {
      base.AbilitaModifica(this, EventArgs.Empty);
    }

    #endregion


    #region Caricamento e salvataggio dei parametri

    /// <summary>
    /// Caricamento dei parametri relativi alle opzioni
    /// </summary>
    protected override void CaricaParametri()
    {

      // Tab Generale
      cmbAfterInsertAction.SelectedIndex = (int)Globals.AfterInsertAction;
      cmbReportOutputType.SelectedIndex = (int)Globals.ReportOutputType;
      cmbSettingsSerializerProvider.SelectedIndex = (int)Globals.SettingsSerializerProvider;
      numMaxElementiInLista.Value = Globals.MaxElementiInLista;
      cmbAnni.SelectedIndex = cmbAnni.Items.IndexOf(Settings.ProjectSettings.AnnoCorrente);
      floModelloDIstintaExcel.Value = Settings.MachineSettings.ModelloXlsDistinta;
      //txtDocumentoDirigenti.Text = Settings.ProjectSettings.CodiceDocumentoDirigenti;
      txtNomeSquadra.Text = Settings.ProjectSettings.NomeSquadra;
      txtStadio.Text = Settings.ProjectSettings.StadioCasalingo;
      numPrimaRigaDati.Value = Settings.ProjectSettings.PrimaRigaDati;
      txtCategoriaCampionatoCorrente.Text = Settings.ProjectSettings.CategoriaCampionatoCorrente;
      txtDescrizioneCoppa.Text = Settings.ProjectSettings.DescrizioneCoppa;
      
        base.CaricaParametri();
    }

    /// <summary>
    /// Salvataggio dei parametri relativi alle opzioni dell'editor di scripts
    /// </summary>
    protected override void SalvaParametri()
    {
      Globals.AfterInsertAction = (AfterInsertAction)cmbAfterInsertAction.SelectedIndex;
      Globals.ReportOutputType = (ReportOutputType)cmbReportOutputType.SelectedIndex;
      Globals.SettingsSerializerProvider = (SettingsSerializerProvider)cmbSettingsSerializerProvider.SelectedIndex;
      Globals.MaxElementiInLista = General.DBToInt(numMaxElementiInLista.Value);

      Settings.ProjectSettings.AnnoCorrente = cmbAnni.SelectedItem.ToString();
      Settings.MachineSettings.ModelloXlsDistinta = floModelloDIstintaExcel.Text;
      //Settings.ProjectSettings.CodiceDocumentoDirigenti = General.DBToString(txtDocumentoDirigenti.Text);
      Settings.ProjectSettings.NomeSquadra = General.DBToString(txtNomeSquadra.Text);
      Settings.ProjectSettings.StadioCasalingo = General.DBToString(txtStadio.Text);
      Settings.ProjectSettings.PrimaRigaDati = General.DBToInt(numPrimaRigaDati.Value);
      Settings.ProjectSettings.CategoriaCampionatoCorrente = txtCategoriaCampionatoCorrente.Text;
      Settings.ProjectSettings.DescrizioneCoppa = txtDescrizioneCoppa.Text;
        base.SalvaParametri();

      try { Settings.MachineSettings.Serialize(); }
      catch { }
      try { Settings.UserSettings.Serialize(); }
      catch { }
      try { Settings.UserSettingsNoConnection.Serialize(); }
      catch { }
    }

    #endregion

	}
}

